#ifndef SCENE_HPP_
# define SCENE_HPP_

# include <list>
# include <string>
# include "3D/Terrain.hpp"
# include "3D/DrawableObject.hpp"
# include "TextureBehaviour.hpp"

class Scene
{
public:
    Scene();
    Scene(std::string const& name, std::string const& path, Terrain* terrain);
    ~Scene();

    void            draw(Shader *shader);
    void            update();

    DrawableObject*     findObject(const unsigned char r, const unsigned char g, const unsigned char b);
    VertexAttributes**  findTerrainVertices(const unsigned char r, const unsigned char g, const unsigned char b, const unsigned int nbObject);

    std::string const&  getName() const;
    void                setName(const std::string &name);

    std::string const&  getPath() const;
    void                setPath(const std::string &path);

    Terrain*            getTerrain();
    void                setTerrain(Terrain* terrain);

    void                addObject(DrawableObject* object);
    std::list<DrawableObject*>&  getObjects();
private:
    std::string         _name;
    std::string         _path;

    Terrain*                    _terrain;
    std::list<DrawableObject*>  _objects;
};

#endif // SCENE_HPP
